# What is each pokemon's primary type?
SELECT pokemon.pokemons.name, pokemon.types.name
FROM pokemon.pokemons
       INNER JOIN pokemon.types
WHERE types.id = primary_type;

# What is Rufflet's secondary type?
SELECT pokemon.types.name
FROM pokemon.pokemons
       JOIN pokemon.types ON pokemon.pokemons.secondary_type = pokemon.types.id
WHERE pokemon.pokemons.name = "Rufflet";

# What are the names of the pokemon that belong to the trainer with trainerID 303?
SELECT pokemon.pokemons.name
FROM pokemon.pokemons
       JOIN pokemon.pokemon_trainer ON pokemon.pokemons.id = pokemon.pokemon_trainer.pokemon_id
WHERE pokemon.pokemon_trainer.trainerID = 303;

# How many pokemon have a secondary type Poison
SELECT COUNT(pokemon.pokemons.name)
FROM pokemon.pokemons
       JOIN pokemon.types ON pokemon.pokemons.secondary_type = pokemon.types.id
WHERE pokemon.types.name = "Poison";

# What are all the primary types and how many pokemon have that type?
SELECT pokemon.types.name, COUNT(pokemon.pokemons.id)
FROM pokemon.pokemons
       JOIN pokemon.types ON pokemon.pokemons.primary_type = pokemon.types.id
GROUP BY pokemon.types.name;

# How many pokemon at level 100 does each trainer with at least one level 100 pokemone have? (Hint: your query should not display a trainer
SELECT COUNT(pokemon.pokemon_trainer.pokemon_id)
FROM pokemon.pokemon_trainer
WHERE pokemon.pokemon_trainer.pokelevel = 100
GROUP BY pokemon.pokemon_trainer.trainerID;

# How many pokemon only belong to one trainer and no other?
SELECT COUNT(*)
FROM (SELECT COUNT(pokemon.pokemon_trainer.pokemon_id)
      FROM pokemon.pokemon_trainer
      GROUP BY pokemon.pokemon_trainer.trainerID
      HAVING COUNT(*) = 1) a;
